// 请求拦截器 区分了一下正常请求时与发送formdata时的请求头
import axios from 'axios'
import { Message, MessageBox } from 'element-ui'
import { router } from '../router/index'
axios.defaults.baseURL = 'http://api.fjmxjt.cn'
axios.interceptors.request.use((config) => {
  config.headers['Content-Type'] = 'application/x-www-form-urlencoded'
  if (config.method === 'post') {
    // FormData时的请求头
    if (Object.prototype.toString.call(config.data) === '[object FormData]') {
      // 请求拦截器处理
      config.headers['Content-Type'] = 'multipart/form-data'
    } else if (Object.prototype.toString.call(config.data) === '[object String]') {
      config.headers['Content-Type'] = 'application/x-www-form-urlencoded'
    }
  } else {
    config.headers['Content-Type'] = 'application/x-www-form-urlencoded'
  }
  return config
})

// 响应拦截器
axios.interceptors.response.use(
  (config) => {
    const value = config.data
    if (config.status && config.status === 200) {
      if (typeof value === 'string') {
        if (value === 'timeout') {
          MessageBox.confirm('太长时间没有操作或操作没有权限，请进入登录页面重新登录?', '提示', {
            confirmButtonText: '确定',
            type: 'warning'
          }).then(() => {
            router.push({ name: 'login' })
          })
        } else {
          Message.info(value)
        }
      }
    }
    return config
  },
  (err) => {
    const value = err.response.statusText
    switch (err.response.status) {
      case 400:
        Message.error('语法格式有误，服务器无法理解此请求')
        break
      case 401:
      case 403:
      case 404:
      case 405:
        Message.warning(value)
        break
      default:
        Message.error('操作过程出错，此次操作无效！' + value)
        break
    }
    return err.response
  }
)
export async function axiosPost(url, params = {}) {
  const res = await axios.post(url, params)
  if (res.status === 200) {
    return res.data
  } else {
    throw res.statusText
  }
}
